package com.devops.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.devops.admin.model.DOSResource;
import com.devops.admin.model.TableResult;
import com.devops.admin.po.DOSBindResourcePo;
import com.devops.admin.po.DOSResourcePo;
import com.devops.admin.vo.DOSPageVo;
import com.devops.admin.vo.DOSResourceVo;

import java.util.List;

/**
 * @ClassName DOSResourceService
 * @Description TODO
 * @Author hepingguo
 * @Date 2022/6/8 11:22
 **/
public interface DOSResourceService extends IService<DOSResource> {

    /**
     * @Author heyabo
     * @Description 保存资源信息
     * @Date 14:16 2022/6/8
     * @Param [resource]
     * @return com.devops.admin.model.DOSResource
     **/
    Boolean saveResource(DOSResource resource);

    /**
     * @Author heyabo
     * @Description 更新资源信息
     * @Date 14:28 2022/6/8
     * @Param [resource]
     * @return com.devops.admin.model.DOSResource
     **/
    Boolean updateResource(DOSResource resource);

    /**
     * @Author heyabo
     * @Description 删除资源
     * @Date 15:22 2022/6/8
     * @Param [resourceId]
     * @return java.lang.Boolean
     **/
    Boolean removeResource(Integer resourceId);

    /**
     * @Author heyabo
     * @Description 分页查询资源信息
     * @Date 15:48 2022/6/8
     * @Param [resource, pageVo]
     * @return com.devops.admin.model.TableResult<com.devops.admin.model.DOSResource>
     **/
    TableResult<DOSResourcePo> queryResources(DOSResourceVo resource, DOSPageVo pageVo);

    /**
     * @Author heyabo
     * @Description 查询资源信息
     * @Date 15:48 2022/6/8
     * @Param [resource, pageVo]
     * @return com.devops.admin.model.TableResult<com.devops.admin.model.DOSResource>
     **/
    List<DOSResourcePo> queryResources(DOSResourceVo resource);

    /**
     * @Author heyabo
     * @Description 查询绑定和未绑定项目的资源
     * @Date 16:53 2022/6/13
     * @Param [projectId, type]
     * @return java.util.List<com.devops.admin.po.DOSBindResourcePo>
     **/
    List<DOSBindResourcePo> getBindResource(Integer projectId, Integer type);

    /**
     * @Author heyabo
     * @Description 根据type查询资源
     * @Date 16:27 2022/6/14
     * @Param [type]
     * @return java.util.List<com.devops.admin.model.DOSResource>
     **/
    List<DOSResource> getResourcesByType(Integer type);

    /**
     * @Author heyabo
     * @Description 获取redis列表信息
     * @Date 15:12 2022/9/22
     * @Param []
     * @return java.util.List<com.devops.admin.model.DOSResource>
     **/
    List<DOSResource> getRedisList();

    /**
     * 获取数据库数据源的连接信息
     * @return
     */
    List<DOSResource> getDatabases(Integer type);
}
